#include <iostream>
#include <unistd.h>
#include <string.h>
#include <arpa/inet.h>

int main() {
    // 1. 创建套接字
    int sock = socket(AF_INET, SOCK_STREAM, 0);
    if (sock < 0) { perror("socket"); return 1; }

    // 2. 指定服务端地址
    sockaddr_in server_addr{};
    server_addr.sin_family = AF_INET;
    server_addr.sin_port = htons(12345);
    inet_pton(AF_INET, "127.0.0.1", &server_addr.sin_addr); // 本地回环地址

    // 3. 连接服务器
    if (connect(sock, (sockaddr*)&server_addr, sizeof(server_addr)) < 0) {
        perror("connect"); return 1;
    }
    std::cout << "已连接服务器！" << std::endl;

    // 4. 发送消息
    std::string msg = "Hello Server!";
    write(sock, msg.c_str(), msg.size());

    // 5. 接收回复
    char buffer[1024];
    int n = read(sock, buffer, sizeof(buffer)-1);
    if (n > 0) {
        buffer[n] = '\0';
        std::cout << "收到服务端回复: " << buffer << std::endl;
    }

    // 6. 关闭
    close(sock);
    return 0;
}
